/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package commonlib.drivers;
import commonlib.domain.Node;
import java.util.Scanner;

/**
 *
 * @author jorge.daniel.negrete
 */
public class DriverNodo {
   public static void main(String[] argc)
   {
		Scanner br=new Scanner(System.in);
		Node<Integer> no=null;
		Node<Integer> aux;
        int op=-1;
        System.out.println("Funciones de la Clase Nodo");
        System.out.println("El nodo es generico asi que en este caso va a ser un nodo de Enteros");
        while(op!=0)
        {
        	System.out.println("Menu de Funciones");
            System.out.println("1.Insertar letra");
            System.out.println("2.Obtener letra");
            System.out.println("3.Insertar Numero");
            System.out.println("4.Obtener Numero");
            System.out.println("5.Insertar hijo Izquierdo");
            System.out.println("6.Insertar hijo Derecho");
            System.out.println("7.Insertar hijo del Medio");
            System.out.println("8.Mostrar hijo Izquierdo");
            System.out.println("9.Mostrar hijo Derecho");
            System.out.println("10.Mostrar hijo del Medio");
            System.out.println("11.Insertar nivel del nodo");
            System.out.println("12.Mostrar nivel del nodo");
            System.out.println("13.Marcar o Desmarcar Nodo");
            System.out.println("14.Consultar Marcacion");


           op=br.nextInt();
           switch(op)
           {
           case 1:
        	      System.out.println("Escriba la letra a insertar");
        	      no=new Node<Integer>(br.next().charAt(0),false,0,1);
        	      System.out.println("Letra agregada");
        	      break;
           case 2:
               	  System.out.println("La letra del nodo es "+no.getLetter());
               	  break;
           case 3:
        	      System.out.println("Escriba el numero a insertar");
     	          no.setData(br.nextInt());
     	         System.out.println("Numero insertado");
        	      break;
           case 4:
        	   System.out.println("el numero del nodo es "+no.getData());
        	      break;
           case 5:
     	       System.out.println("Escriba la letra del hijo Izquiedo");
     	       aux=new Node<Integer>(null);
     	       aux.setLetter(br.next().charAt(0));
     	       no.setLeft(aux);
     	       System.out.println("hijo IzquierdO Insertado");
     	       break;
           case 6:
        	   System.out.println("Escriba la letra del hijo Derecho");
     	       aux=new Node<Integer>(null);
     	       aux.setLetter(br.next().charAt(0));
     	       no.setRight(aux);
     	       System.out.println("hijo Derecho Insertado");
     	       break;
           case 7:
        	   System.out.println("Escriba la letra del hijo del Medio");
     	       aux=new Node<Integer>(null);
     	       aux.setLetter(br.next().charAt(0));
     	       no.setMiddle(aux);
     	       System.out.println("hijo del medio Insertado");
     	       break;
           case 8:
        	   System.out.println("La letra del hijo izquierdo es "+no.getLeft().getLetter());
     	       break;
           case 9:
        	   System.out.println("La letra del hijo derecho es "+no.getRight().getLetter());
     	       break;
           case 10:
        	   System.out.println("La letra del hijo del medio es "+no.getMiddle().getLetter());
     	       break;
           case 11:
        	   System.out.println("Insertar el nivel del nodo");
        	   no.setLevel(br.nextInt());
        	   System.out.println("nivel del nodo insertado");
     	       break;
           case 12:
        	   System.out.println("El nivel del nodo es "+no.getLevel());
        	   break;
           case 13:
        	   if(no.getMarked()==false)
        	   {
        		no.setMarked(true);
        		System.out.println("Nodo Marcado");
        	   }
        	   else
        	   {
        		no.setMarked(false);
        		System.out.println("Nodo Desmarcado");
        	   }
        	   break;
           case 14:
        	   if(no.getMarked()==false)
        	   {
        		System.out.println("Nodo Marcado");
        	   }
        	   else
        	   {
        		System.out.println("Nodo Desmarcado");
        	   }
              break;
           }

        }


   }
}
